import numpy as np
import matplotlib.pyplot as plt

# 定义多个伽马值
# gamma_values = [1/25.0, 1/10.0, 1/5.0, 1/2.5, 1/1.5, 1, 1.5, 2.5, 5.0, 10.0, 25.0]  # 增加了更多的伽马值
gamma_values = [1/2,1/2.2]  # 增加了更多的伽马值

# 生成灰度值，范围从0到255，共256个点
x = np.linspace(0, 255, 256)

# 创建绘图
plt.figure(figsize=(10, 6))

# 对每个伽马值绘制伽马校正曲线
for gamma in gamma_values:
    # 计算对应的亮度（伽马曲线）
    y = (x / 255) ** (1 / gamma) * 255  # 伽马校正公式
    
    # 使用格式化的字符串显示伽马值
    if gamma < 1:
        label = f'Gamma = 1/{1/gamma:.2f}' if gamma != 1 else 'Gamma = 1'
    else:
        label = f'Gamma = {gamma:.2f}' if gamma != 1 else 'Gamma = 1'

    plt.plot(x, y, label=label)

# 添加标题和标签
plt.title('Gamma Correction Curves for Different Gamma Values')
plt.xlabel('Input Pixel Value (0-255)')
plt.ylabel('Output Brightness (cd/m²)')

# 设置网格
plt.grid(True)

# 设置自定义的x轴和y轴刻度
plt.xticks(np.arange(0, 256, 20))  # 设置x轴刻度从0到255，每隔20显示一个刻度
plt.yticks(np.arange(0, 256, 20))  # 设置y轴刻度从0到255，每隔20显示一个刻度

# 添加图例
plt.legend()

# 显示图形
plt.show()
